Tootsville::Infinity-Get-Room-Vars

Function

Infinity-Get-Room-Vars names a function, with lambda list (D U RECIPIENT/S):

Returns “room variables.”

Lisp GET-ROOM-VARS = JSON getRoomVars

Usage

This command requires no parameters.

Historical Usage (Romance I)

In Romance I, the server had a library of free-form key-value pairs which were used to control each “room,” or screen, of the game.

These variables, which were usually edited using the special “Zookeeper” client by Eric Feilding, eventually metamorphosed into a library of very specific “room variables” as described herein.

We no longer support arbitrary key-value pairs; at this point, all room variables are specifically enumerated in the following documentation; however, future releases could expand this list, so conforming clients are required to accept and ignore unrecognized variables silently.

Room Environment

These room variables define the general environment.

s

The Sky. Consists of the background (sky) texture file as a URL, or, the position of a sky object such as the sun, a moon, or a cloud.

f

The Floor; no longer used in 2.0. (This was the actual SWF file that had the room background in it, in Romance I.)

w

The Weather, or overlay artwork. Used to indicate precipitation.

Sky Variables

WRITEME

See TOOTSVILLE SKY-ROOM-VAR

Weather

WRITEME

Room Objects

item

A placed item can be represented by an encoded string form (“item”), or a JSON structure (“itm2”).

The older style uses a key beginning with item and an unique identifier string, followed by a ~ delimited list of: description, X position, Y position, facing, and (optional) Z position.

If the Z position is omitted, then the value given for Y position should be used for Z instead. (The Y axis used to run across the floor.)

The facing value can be given in radians, or as a special moniker from the set: N NE E SE S SW W NW. See TOOTSVILLE INTERPRET-FACING.

itemfoo123: "flowerPot~100~931~N" itembar456: "flowerPot~100~0~1.23412952423~931"

itm2

Placed items, new form: JSON object

{ uuid:
 position: {  x: y: z: },
 facing: FACING,
 baseColor: COLOR,
 altColor: COLOR,
 energy: NUMBER,
 scale:  { x: y: z: },
 world:  { world: lat: long: alt: },
 template:
 { id:
   name:
   description:
   trade: [  "Y", "N", or "X"  ],
   avatar:
   energyKind:
   energyMax:
   onZero:
   wearSlot:
   weight: } }

furn

User-positioned items: key: “furn” --- no longer used.

text

Text items: key: "text" + unique-ID = value

Text to be displayed atop another item. The value might be x~z~string or itm2-id~attachment~string. In the latter form, the text is attached to the model of the “itm2” given at the attachment point.

The attachment point is expected to be of the form tex:TEXTURE-NAME, i.e. a literal prefix tex: followed by the name of the surface texture onto which the text should be drawn.

Changes from 1.2 to 2.0

The facing directions can now be cardinal directions, or radians.

User-placed “furniture” is no longer distinguished from other items in the world.

text items can now be associated with items, rather than having fixed positions of their own.

Changes from 1.1 to 1.2

The itm2 format was added.

Places

Places are regions of the game space defined by polygonal outlines. These are held in Room Variables with names of the form "zone" plus an arbitrary identifier. The contents of the room variable are a key followed by ":" and a series of coördinates.

Each coördinate pair/triplet is given as x,y,z in decimal, literally, like: "100,0,200". When only two coördinates are supplied, they represent x and z. They are separated with "~". To stop one polygon and start on another, give "~~" with no coördinates between.

The key of a Place specifies its purpose. The keys understood by the server include:

grass

This is the default Place kind; any area of ground that is not explicitly part of some other kind of Place is grass.

tallGrass

water

unwalkable

This demarcates an invisible obstacle --- a collision-only object --- which prevents avatars from entering that space.

doormat

parking

driveway

stairs

sidewalk

cobbles

slide

firepole

game

This space is part of an in-world game; e.g. a soccer field.

ice

sand

snow

cheese

The stuff the moons are made of. (Fight me.)

pit

A bottomless pit

Changes from 1.2 to 2.0

Places (referred to, confusingly, as zones) existed in Romance 1.0, but they came in two forms. Some zones were “burned in” to the Flash “floor” files as invisible polygon layers with a specific naming convention. Others were promulgated by room variables.

The variety of places has been substantially increased.

The default was for the “floor” to be unwalkable, with walkable spaces marked out by zones. The reverse is now true, however, items are now physical boundaries that block player movement.

Changes from 1.0 to 1.1

Prior to 1.1, all floor zones were embedded permanently in the Flash “floor” files.

More good stuff

WRITEME --- there is more to explain about room variables.

See Also

See TOOTSVILLE-USER PLACE for an explanation of creating certain places in the game and how they work.

File

Defined in file src/infinity/new-commands-20.lisp.